package com.yingsheng.bi.hks.dto.ess;

import com.yingsheng.bi.hks.dto.HksTransReq;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;

@EqualsAndHashCode(callSuper = true)
@Data
public class EssCreateFlowReq extends HksTransReq {


    @ApiModelProperty(value = "合同流程的类别分类", allowableValues = "最大长度为200个字符，仅限中文、字母、数字和下划线组成",
            example = "劳务合同",
            notes = "此合同类型需要跟模板配置的合同类型保持一致")
    @Length(max = 200)
    @Pattern(regexp = "")
    private String flowType;

    @ApiModelProperty(value = "合同流程的名称",
            allowableValues = "长度不能超过200个字符，只能由中文汉字、中文标点、英文字母、阿拉伯数字、空格、小括号、中括号、中划线、下划线以及（,）、（;）、（.）、(&)、（+）组成",
            example = "张三的入职合同",
            notes = "其中一个用处作为合同下载的默认文件名称")
    @NotBlank
    @Length(max = 200)
    @Pattern(regexp = "")
    private String flowName;

    @ApiModelProperty(value = "合同流程描述信息", allowableValues = "最大长度1000个字符")
    @Length(max = 1000)
    private String flowDescription;

    @ApiModelProperty(value = "合同流程的签署截止时间", allowableValues = "格式为Unix标准时间戳（秒）", example = "1604912664",
            notes = "如果未设置签署截止时间，则默认为合同流程创建后的365天时截止，如果在签署截止时间前未完成签署，则合同状态会变为已过期，导致合同作废。")
    @Pattern(regexp = "")
    private Integer deadLine;

    @ApiModelProperty(value = "合同到期提醒时间",
            allowableValues = "格式为Unix标准时间戳（秒）,支持的范围是从发起时间开始到后10年内", example = "1604912664",
            notes = "到达提醒时间后，腾讯电子签会短信通知发起方企业合同提醒，可用于处理合同到期事务，如合同续签等事宜。")
    private Integer remindedOn;

    @ApiModelProperty(value = "合同流程的签署顺序类型", example = "true",
            allowableValues = "false：(默认)有序签署, 本合同多个参与人需要依次签署; true：无序签署, 本合同多个参与人没有先后签署限制")
    private Boolean unordered;

    @ApiModelProperty(value = "自定义腾讯电子签小程序合同列表页展示内容",
            example = "合同名称:{合同名称};发起方: {发起方企业}的{发起方姓名}大佬！;净重: 100吨;品类: 铁矿石",
            notes = "模板中支持以下变量: {合同名称}、{发起方企业}、{发起方姓名}、{签署方N企业}、{签署方N姓名}")
    private String customShowMap;

    @ApiModelProperty(value = "替换短信通知、填写、签署流程中标题、按钮、合同详情等地方出现合同字样",
            allowableValues = "0 :合同（默认值）；1 :文件；2 :协议")
    private Integer flowDisplayType;

}
